<?
class ActiveForm extends Form
{
	private $user,$show_active=1;
	
	function ActiveForm()
	{
		Form::Form('ActiveForm');
		
		$user_id	=(int)Url::get('user_id',0);
		
		if($user_id)
		{
			$this->user	=	DB::select(TABLE_PREFIX . "user",'id='.$user_id);
			
			if($this->user)//Nếu tồn tại user
			{
				$active_code = Url::get('code');

				$this->active_user($this->user,$active_code);
			}
			else
			{
				$this->setFormError('','Tài khoản không tồn tại!');
			}
		}
	}
	
	function on_submit()
	{
		$user_email	= String::trimSpace(Url::get('user_email'));
		
		if($user_email == ''){
			$this->setFormError('user_email','Bạn chưa nhập vào tài khoản của bạn!');
		}
		elseif(!preg_match("/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,4}$/",$user_email))
		{
			$this->setFormError('user_email',"Email <b>$user_email</b> không đúng định dạng!");
		}
		else
		{
			$this->user=DB::select(TABLE_PREFIX . "user",'email="'.$user_email.'"');
			
			if($this->user)//Nếu tồn tại user
			{
				if(isset($_POST['acctive']) && $_POST['acctive']=='Kích hoạt')
				{
					$active_code=Url::get('active_code');
					
					$this->active_user($this->user,$active_code);
				}
				elseif(isset($_POST['re_acctive']) && $_POST['re_acctive'] == 'Gửi lại mã kích hoạt')//Gửi lại mail kích hoạt
				{
					$this->reactive_user($this->user);
				}
			}
			else{
				$this->setFormError('',"Tài khoản Email <b>$user_email</b> không tồn tại!");
			}
		}
	}
	
	function draw()
	{
		global $display;
		$this->beginForm(false,'post',false,Url::build_current(array('cmd'=>'active')));
		
		$display->add('msg',$this->showFormErrorMessages(1));
		$display->add('smsg',$this->showFormSuccesMessages(1));
		
		$display->add('show_active',$this->show_active);
		$display->add('user_email',Url::get('user_email',$this->user['email']));
		$display->output('active');
		$this->endForm();
	}
	
	function reactive_user($user)//Gửi lại mail kích hoạt
	{
		if($user['user_activated']==1)//Nếu chưa kích hoạt
		{
			if(USER_ACTIVE_ON)
			{
				$active			= DB::select('user_active','user_id='.$user['id']);
				$active_code	= md5(TIME_NOW.$user['password']);
				
				if($active)
				{
					$active	=	array(
									'id'		 =>$active['id'],
									'user_id'	 =>$user['id'],
									'active_code'=>$active_code,
									'time'		 =>TIME_NOW,
									);
				}
				else
				{
					$active	=	array(
									'user_id'	 =>$user['id'],
									'active_code'=>$active_code,
									'time'		 =>TIME_NOW,
									);
				}
				
				DB::insert('user_active',$active,true);
				
				global $display;
				
				$display->add("active_account", 0);
                
				$display->add('rb_url',WEB_ROOT);
                                $display->add('WEB_DOMAIN',WEB_DOMAIN);
                                $display->add('WEB_NAME',WEB_NAME);
				$display->add('user_id',$user['id']);
				$display->add("user_email", $user['email']);
                                $display->add("user_name", $user['full_name']);
                
				$display->add('active_code',$active_code);
				$display->add('SUPPORT_TEL',SUPPORT_TEL);
				$display->add('SUPPORT_EMAIL',SUPPORT_EMAIL);
				
				$content_email=$display->output('send_active_mail',1,'RegisterSuccess');
				
				//Send email here;
				if(EMAIL_ON && System::sendECEmail(TEST_EMAIL != '' ? TEST_EMAIL : $user['email'],'Kích hoạt lại tài khoản!',$content_email))
				{
					$this->setFormSucces('','Mã kích hoạt đã được gửi đi tới E-mail: "'.$user['email'].'", bạn hãy check lại Email để kích hoạt tài khoản của mình!
											<br />(Vui lòng kiểm tra trong bulk mail hoặc spam mail của bạn nếu bạn không nhận được email trong hộp thư đến)');
				}
				else
				{
					$this->setFormError('','Không gửi được Mã kích hoạt tới E-mail: "'.$user['email'].'"!');
				}
			}
			else
			{
				DB::query('UPDATE ' . TABLE_PREFIX . 'user SET is_active=1 WHERE id='.$user['id']);
				
				User::getUser($user['id'],1);
				Url::redirect('sign_in');
			}
		}
		else{
			$this->show_active=0;
			$this->setFormError('',"Tài khoản <b>{$user['email']}</b> đã được kích hoạt rồi!");
		}
	}
	
	
	//Kích hoạt user
	function active_user($user,$active_code)
	{
		$active		=	DB::select('user_active','user_id='.$user['id']);
		
		if($active)//Nếu user chưa được kích hoạt
		{	
			$success = false;
			
			if(USER_ACTIVE_ON)//Nếu bật chế độ active tài khoản
			{
				if($active['active_code'] == $active_code && $active_code)
				{
					DB::query('UPDATE ' . TABLE_PREFIX . 'user SET is_active = 1 WHERE id='.$user['id']);
					DB::delete('user_active','user_id='.$user['id']);
					
					User::getUser($user['id'],1);
					
					$success = true;
				}
				elseif($active_code)
				{
					$this->setFormError('active_code','Mã kích hoạt không đúng!');
				}
				else
				{
					$this->setFormError('active_code','Bạn chưa nhập mã kích hoạt cho tài khoản!');
				}
			}
			else
			{
				if($active_code && $active['active_code'] == $active_code)
				{
					DB::query('UPDATE ' . TABLE_PREFIX . 'user SET is_active = 1 WHERE id='.$user['id']);
					DB::delete('user_active','user_id='.$user['id']);
					
					User::getUser($user['id'],1);
					
					$success=true;
				}
				else
				{
					DB::query('UPDATE ' . TABLE_PREFIX . 'user SET is_active = 1 WHERE id='.$user['id']);
					DB::delete('user_active','user_id='.$user['id']);
					
					User::getUser($user['id'],1);
					
					Url::redirect('sign_in');
				}
			}
			
			if($success)//Đăng nhập cho user, gửi mail thông báo đã kích hoạt!
			{
				$_SESSION['is_load_page_first'] = 1;			
				
				User::LogIn($user['id']);
				
				if(USER_ACTIVE_ON)//Gửi mail thông báo thành công
				{
					global $display;
						
					$display->add("active_account", 1);
                    
					$display->add('rb_url',WEB_ROOT);
                                        $display->add('WEB_DOMAIN',WEB_DOMAIN);
                                        $display->add('WEB_NAME',WEB_NAME);
					$display->add('user_id',$user['id']);
					$display->add("user_email", $user['email']);
                                        $display->add("user_name", $user['full_name']);
                                        
					$display->add('active_code',$active_code);
					$display->add('SUPPORT_TEL',SUPPORT_TEL);
					$display->add('SUPPORT_EMAIL',SUPPORT_EMAIL);
					
					$content_email=$display->output('send_active_mail',1,'RegisterSuccess');
					
					//Send email here;
					System::sendECEmail(TEST_EMAIL != '' ? TEST_EMAIL : $user['email'],'Kích hoạt tài khoản thành công',$content_email);

					/*						
					$display->add('eb_url',WEB_ROOT);
					$display->add('user_id',$user['user_id']);
					$display->add('user_email',$user['user_email']);
					
					$content_email	=	$display->output('send_activated_mail',1);
					
					System::sendECEmail(TEST_EMAIL != '' ? TEST_EMAIL : $user['user_email'],'Kích hoạt tài khoản thành công!',$content_email);
					*/
				}
				
				Url::redirect_current(array('cmd'=>'activated'));
			}
		}
		else
		{
			if($this->user['is_active']==2)//Nếu chưa kích hoạt
			{
				DB::query('UPDATE ' . TABLE_PREFIX . 'user SET is_active = 1 WHERE id='.$user['id']);
				
				User::getUser($user['id'],1);
				Url::redirect('sign_in');
			}
			else
			{
				$this->show_active=0;
				$this->setFormError('','Tài khoản đã được kích hoạt rồi!');
			}
		}
	}
}
?>